Processors used in computing systems, such as Central Processing Units (CPUs), often maintain several task queues to manage tasks that are currently executing and that are awaiting execution by that processor. These multiple task queues are able to, for example, store tasks of different priorities in which tasks in a higher priority queue are serviced by the processor prior to tasks in lower priority queues. One example of multiple queues that represent different processing priority levels is a processor that maintains a high priority queue referred to as an “in progress work queue” that contains processes that are ready to begin processing as well as processes that have already begun to begin processing. Another queue, the “new message queue,” stores, for example, messages received from a network that specify tasks that are to be executed. In operation, tasks in the high priority “in progress work queue” are serviced by the processor prior to processing messages in the “new message queue.” As a result, the in progress work queue is empty when messages from the new message queue are processed and generate new tasks to distribute to a processor within a multiple processor architecture. A common metric to determine processor loading and therefore which processor to assign a new task is the size of a processor's associated in progress queue.
Processors incorporated in multiple processor architectures, such as a Symetric Multiple Processor (SMP) server, are assigned tasks by a task distribution process or similar process. In an example, a task distribution process receives a task specification in a network message received through a network interface. Depending upon the network communications processing architecture of the multiple processor server, the task distribution process is able to execute on one designated processor to process all messages, or alternative architectures allow any processor within the multiple processors to execute the task distribution process. When a processor processes a network message specifying a task to be assigned to a processor, that processor examines the processing loads of all processors of the multiple processor architecture and determines which processor is most lightly loaded. The task is then assigned to the most lightly loaded processor.
Some processing architectures operate by executing the task distribution process in response to processing newly received network messages. Newly received network messages are processed from the new message queue, which has a lower priority than the in progress work queue. Since the messages in the new message queue, which trigger the task distribution processes, are selected for processing when there are no tasks in the in progress work queue, determinations by the task distribution process of the size of the in progress work queue for the processor executing the task distribution process are generally misleading and are lower than the actual short time average size of the in progress work queue that should be used to determine processor loading. Because the number of tasks in the in progress work queue is the quantity that is used to determine the processing load of a processor, the task distribution process generally uses an inaccurate, and misleading low, measure of the processing load of the processor that is executing the task distribution process. As a result, the task processor often inaccurately detects an inaccurately low processing load for the processor on which it is executing and assigns more tasks to its own processor as a result. This causes an inefficient distribution of tasks among the multiple processors of a multiple processor architecture and inefficiently provides too many tasks to the processor executing the task distribution process. This unequal distribution of tasks is particularly prevalent in architectures that use one processor of a multiple processor architecture to process all network messages, and therefore distributes tasks to the multiple processors.
Therefore, the efficiency of multiple processor computing systems is able to be improved by a more accurate processor loading measurement technique is used for processors executing a task distribution process in a multiple processor architecture.